/**
 * 
 */
package example.business.api.topic.services;

import java.util.List;
import java.util.Map;

import com.vanstone.common.ObjectDuplicateException;

import example.business.api.topic.Tag;

/**
 * @author shipeng
 *
 */
public interface TagService {

  /**
   * 添加标签信息
   * 
   * @param tagname
   * @return
   */
  Tag addTag(String tagname) throws ObjectDuplicateException;

  /**
   * 如果存在直接返回，如不存在写入后返回
   * 
   * @param tagname
   * @return
   */
  Tag saveTag(String tagname);

  /**
   * 获取标签信息
   * 
   * @param id
   * @return
   */
  Tag getTag(long id);

  /**
   * 通过ids获取Tag信息
   * 
   * @param ids
   * @return
   */
  Map<Long, Tag> getTagsAsMap(List<Long> ids);

  /**
   * 获取标签列表
   * 
   * @param ids
   * @return
   */
  List<Tag> getTags(List<Long> ids);

  /**
   * 通过名称获取标签信息
   * 
   * @param tagname
   * @return
   */
  Tag getTagByName(String tagname);

  /**
   * 更新标签信息
   * 
   * @param id
   * @param tagname
   * @return
   */
  Tag updateTaginfo(long id, String tagname);

  /**
   * 删除标签信息
   * 
   * @param id
   */
  void deleteTag(long id);

  /**
   * 获取标签信息
   * 
   * @param offset
   * @param limit
   * @return
   */
  Tag getTags(long offset, long limit);

  /**
   * 获取标签信息
   * 
   * @return
   */
  long getTotalTags();

}
